package com.linjm.service;

import com.linjm.bean.OrderInfo;
import com.linjm.bean.enums.ProcessStatus;
import org.springframework.stereotype.Repository;

@Repository
public interface OrderService {
    /**
     * 保存订单
     * @param orderInfo
     * @return
     */
    String saveOrder(OrderInfo orderInfo);

    /**
     * 生成流水号
     * @param userId
     * @return
     */
    String getTradeNo(String userId);

    /**
     *
     * @param userId 获取缓存的流水号
     * @param tradeCodeNo 页面的流水号
     * @return
     */
    boolean checkTradeCode(String userId,String tradeCodeNo);

    /**
     * 删除流水号
     * @param userId
     */
    void  delTradeCode(String userId);

    /**
     * 查询是否有库存
     * @param skuId
     * @param skuNum
     * @return
     */
    boolean checkStock(String skuId, Integer skuNum);

    OrderInfo getOrderInfo(String orderId);

    /**
     * 消息队列消费，并更改订单状态
     * @param orderId
     * @param processStatus
     */

    void updateOrderStatus(String orderId, ProcessStatus processStatus);

    /**
     * 通知库存系统减库存
     * @param orderId
     */
    void sendOrderStatus(String orderId);
}
